import webview
import threading
import time
from app import app
from werkzeug.security import generate_password_hash, check_password_hash


# 启动 Flask 应用
def start_flask():
    app.run(port=5000, threaded=True)

    # 配置pywebview关闭提示的中文翻译


chinese = {
    'global.quitConfirmation': u'确定关闭?',
}


# 传给前端的api对象, 定义了一个可以通过js调用退出当前应用的函数
class Api:
    def __init__(self) -> None:
        self._window = None

    def set_window(self, window):
        self._window = window

    def quit(self):
        self._window.destroy()


if __name__ == '__main__':
    # 创建并启动 Flask 线程
    flask_thread = threading.Thread(target=start_flask)
    flask_thread.daemon = True
    flask_thread.start()

    # 等待 Flask 应用启动
    time.sleep(1)

    # 实例化Api类
    api = Api()
    window = webview.create_window(
        title='知了问答',
        # url='http://127.0.0.1:5000',
        url=app,
        # fullscreen=True,    # 以全屏模式启动
        width=1224,  # 自定义窗口大小
        height=700,
        # resizable=False,  # 固定窗口大小
        text_select=False,  # 禁止选择文字内容
        confirm_close=True,  # 关闭时提示
        js_api=api  # 将上面实例化后的Api对象传给前端js调用
    )
    # --划重点--务必记得需要将上面创建的window对象再通过函数传给实例化后的api对象
    api.set_window(window)
    # 启动程序
    webview.start(localization=chinese)
